<?php
/**
 *
 * ============================================================================
 * * 版权所有 度拉拉 * *
 * 网站地址: http://www.dlltrip.com
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * Author By: 倪宗锋
 * PhpStorm LoginService.php
 * Create By 2017/6/8 9:48 $
 */

namespace zzcx\service\user;

use common\models\ShUser;
use common\models\ShUserSystemAuth;
use common\service\login\LoginService;
use common\util\Util;

class Login
{

    /**
     * Desc:发送短信
     * Function Name: sendMessage
     * @param $phone
     * @return array
     * @author 倪宗锋
     */
    public function sendMessage($phone)
    {
        if (Util::checkPattern('mobile', $phone) == false) {
            return Util::returnArrEr('请填写正确的手机号');
        }
        $code = rand(1000, 9999);
        $msg = "您的验证码为:$code";
        $result = Util::sendMessage($msg, $phone);
        if ($result['flag']) {
            \Yii::$app->cache->set('phone' . $phone, $code, 1800);
            return Util::returnArrSu('验证码发送成功');
        }
        return Util::returnArrEr('验证码发送失败');
    }

    /**
     * Des:登录处理
     * Name: doLogin
     * @param $param
     * @return array
     * @author 倪宗锋
     */
    public function doLogin($param)
    {
        //校验参数
        if (Util::checkPattern('mobile', $param['phone']) == false) {
            return Util::returnArrEr('请填写正确的手机号');
        }
        if (Util::checkPattern('codeMsg', $param['code']) == false) {
            return Util::returnArrEr('验证码错误');
        }
        $code = \Yii::$app->cache->get('phone' . $param['phone']);
        if ($code != $param['code']) {
            return Util::returnArrEr('验证码错误');
        }
        //获取手机号是否已经注册 没有注册则注册
        $shUser = new ShUser();
        $getUser = $shUser->getUserInfoByPhone($param['phone']);
        if (empty($getUser['phone'])) {
            $strArr = range('a', 'z');//生成数组a-z
            $strArr = array_merge($strArr, $strArr, $strArr);
            shuffle($strArr);//打乱数组顺序
            $str = substr(implode('', $strArr), 0, 3);//将打乱后的数组拼接成字符串 并截取前三个字符
            $data = [
                'user_name' => 'zz_' . substr($param['phone'], 0, 6) . $str,
                'phone' => $param['phone']
            ];
            $shUser->addUser($data);
            $getUser = $shUser->getUserInfoByPhone($param['phone']);
        }
        if (empty($getUser['phone'])) {
            return Util::returnArrEr('登录失败！[add fail]');
        }
        $uid = $getUser['uid'];
        $return = LoginService::setLogin($uid);//设置用户登录状态 并获取access_token
        return $return;
    }
}